package com.itheima.controller;

import com.itheima.common.result.PageResult;
import com.itheima.common.result.Result;
import com.itheima.pojo.CheckItem;
import com.itheima.pojo.dto.CheckitemDTO;
import com.itheima.pojo.dto.CheckitemPageQueryDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.itheima.service.CheckitemService;

import java.util.List;

/**
 * 检查项Controller
 * 
 * @author hjc
 * @date 2025-01-11
 */
@RestController
@RequestMapping("/checkitem")
@Api(tags = "检查项相关接口")
@Slf4j
public class CheckitemController
{
    @Autowired
    private CheckitemService checkitemService;

    /**
     * 查询检查项列表
     */
    @PostMapping("/findPage")
    @ApiOperation("检查项分页查询")
    public Result<PageResult> page(@RequestBody CheckitemPageQueryDTO checkitemPageQueryDTO) {
        log.info("检查项分页查询:{}",checkitemPageQueryDTO);
        PageResult pageResult = checkitemService.pageQuery(checkitemPageQueryDTO);
        return Result.success(pageResult);
    }


    /**
     * 新增检查项
     * @param checkitemDTO
     * @return
     */
    @PostMapping("/add")
    @ApiOperation("新增检查项")
    public Result add(@RequestBody CheckitemDTO checkitemDTO)
    {
        log.info("新增检查项：{}",checkitemDTO);
        checkitemService.save(checkitemDTO);

        return Result.success();
    }

    /**
     * 根据id查询检查项
     * @param id
     * @return
     */
    @GetMapping("/findById")
    @ApiOperation("根据id查询检查项")
    public Result<CheckitemDTO> getById(@RequestParam(value = "id") Long id) {
        log.info("根据id查询检查项:{}",id);
        CheckitemDTO checkitemDTO = checkitemService.getById(id);
        return Result.success(checkitemDTO);
    }

    @PostMapping("/edit")
    @ApiOperation("修改检查项")
    public Result update(@RequestBody CheckitemDTO checkitemDTO) {
        log.info("修改检查项：{}",checkitemDTO);
        checkitemService.update(checkitemDTO);

        return Result.success();
    }


    /**
     * 检查项删除
     * @param id
     * @return
     */
    @GetMapping("/deleteById")
    @ApiOperation("检查项删除")
    public Result delete(@RequestParam Long id) {
        log.info("检查项删除:{}",id);
        checkitemService.delete(id);

        return Result.success();
    }

    /**
     * 根据检查组id查询检查项id集合
     * @param checkgroupId
     * @return
     */
    @GetMapping("/findCheckItemIdsByCheckGroupId")
    @ApiOperation("根据检查组id查询检查项id集合")
    public Result<List<Long>>getCheckItemIdsByCheckGroupId(@RequestParam Long checkgroupId) {
        log.info("根据检查组id查询检查项id集合:{}",checkgroupId);
        List<Long> CheckItemIds = checkitemService.getCheckItemIdsByCheckGroupId(checkgroupId);
        return Result.success(CheckItemIds);
    }

    @GetMapping("/findAll")
    public Result findAll() {
        List<CheckItem> checkItems = checkitemService.findAll();
        return Result.success(checkItems);
    }


}
